<?php

class File
{
    private $_dir;
    const EXT = '.txt';

    public function __construct()
    {
        $this->_dir = dirname(__FILE__).'/files/';
    }

    //获取cacheTime和value截取出来，如果cache比当前时间大有效，否则失效.cacheTIME表示失效时间
    public function cacheData($key, $value = '', $cacheTime = 0)
    {
        $filename = $this->_dir.$key.self::EXT;
        if ($value !== '') { //将value值写入缓存
            if (is_null($value)) {
                return @unlink($filename);
            }
            $dir = dirname($filename);
            if (!is_dir($dir)) {
                mkdir($dir, 0777);
            }
            $cacheTime = sprintf('%011d', $cacheTime);

            return file_put_contents($filename, $cacheTime.json_encode($value));
        }

        if (!is_file($filename)) {
            return false;
        }
        $contents = file_get_contents($filename);
        $cacheTime = substr($contents, 0, 11);
        $value = substr($contents, 11);
        if ($cacheTime != 0 && $cacheTime + filemtime($filename) < time()) {
            unlink($filename);

            return false;
        }

        return json_decode($value, true);
    }
}
